package cn.simon.free.redis.jedis.hash;

import java.util.List;
import java.util.Map;

/**
 * redis - hash 类型,专用接口
 *
 * @author simon
 * @date 2021/5/14 10:25
 * @copyright:
 * @modifier
 * @motto a no talent, people who have to study hard
 */
public interface JedisHash {

    /**
     * 新增key-field-value
     *
     * @param key
     * @param field
     * @param value
     */
    void hmSet(String key, String field, String value);

    /**
     * 获取所有给定字段的值
     *
     * @param key
     * @param field
     * @return
     */
    Object hmGet(String key, String field);

    /**
     * 获取所有给定字段的值
     *
     * @param key
     * @param fields
     * @return
     */
    List<Object> hmGet(String key, String... fields);

    /**
     * 新增多个 key-field-value
     *
     * @param key
     * @param fieldWithValue
     */
    void hmSet(String key, Map<Object, Object> fieldWithValue);

    /**
     * 获取指定key下,所有的field和value的值
     *
     * @param key
     * @return
     */
    Map<Object, Object> hmGetAll(String key);

    /**
     * 删除一个或多个哈希表字段
     *
     * @param key
     * @param fields
     * @return
     */
    Long hmDel(String key, String... fields);

    /**
     * 查看哈希表 key 中，指定的字段是否存在。
     *
     * @param key
     * @param field
     * @return
     */
    Boolean hmExist(String key, String field);
}
